import axios from 'axios'
import { useUserStore } from '@/stores/userStore';

const service = axios.create({
    baseURL: import.meta.env.VITE_API_BASE || '/api',
    timeout: 5000
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 确保所有请求默认使用JSON格式
        if (!config.headers['Content-Type']) {
            config.headers['Content-Type'] = 'application/json';
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

service.interceptors.response.use(
    response => {   // 添加响应数据格式检查
        if (response.data && typeof response.data === 'string') {
            try {
                response.data = JSON.parse(response.data);
            } catch (e) {
                console.warn('响应数据不是标准JSON格式');
            }
        }  return response;
    },
    error => {    const userStore = useUserStore();
        if (error.response) {
            // 添加更多状态码处理
            switch(error.response.status) {
                case 403:
                    error.message = '无访问权限';
                    break;
                case 404:
                    error.message = '请求资源不存在';
                    break;
                case 400:
                    error.message = '请求参数错误，请检查输入';
                    break;
                case 401:
                    userStore.logout();
                    error.message = '登录已过期，请重新登录';
                    window.location.href = '/login';
                    break;
                case 500:
                    error.message = '服务器错误，请稍后重试';
                    break;
                default:
                    error.message = `请求失败: ${error.message}`;
            }
        }
        return Promise.reject(error);
    }
)

export default service